home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 1.iso / toolbox / src / exampleCode / opengl / GLUT / CHANGES next >
Text File  |  1996-11-11  |  13KB  |  353 lines

  1.  
  2. GLUT Change Log
  3. ================
  4.  
  5. NOTE:  This document is potentially incomplete.
  6.  
  7. GLUT 3.0 -> 3.1
  8. ----------------
  9.  
  10.   o  The various shape rendering routines use single
  11.      precision instead of double precision.
  12.  
  13.   o  The box shape rendering routines don't generate
  14.      redundant normals.
  15.  
  16.   o  Make glutExtensionSupported more robust.
  17.  
  18.   o  Added test20 for glutExtensionSupported.
  19.  
  20.   o  Fixed Makefile in /usr/share/src/GLUT images.
  21.  
  22.   o  Fixed multisample complication bug in dinospin.c
  23.  
  24.   o  Fixed multiple includes in moth.c
  25.  
  26.   o  Add contribed steam.c and glutmech demos (cool!).
  27.  
  28.   o  Added fontdemo and evaltest in progs/examples.
  29.  
  30.   o  Fix an HP/UX compilation problem with libglut.a
  31.  
  32.   o  Fix GETTIMEOFDAY macro to take two args on a Sun.  Why does
  33.      Sun claim to be SVR4 when they have a BSD (2 parameter
  34.      gettimeoday)?
  35.  
  36.   o  Add an #ifdef to glut_win.c for working around Solaris
  37.      2.4 and 2.5 bug in XmuLookupStandardColormap.
  38.  
  39. GLUT 2.3 -> 3.0
  40. ----------------
  41.  
  42.   o  Major version change so GLUT 3.0 does have API additions!
  43.  
  44.   o  Added yacme (yet another colormap editor) demo by Patrick Bouchaud
  45.      (SGI Switzerland).
  46.  
  47.   o  Updated glut.h so that GLUT_XLIB_IMPLEMENTATION=5 for 3.0
  48.      and GLUT_API_VERSION=3 for 3.0.
  49.  
  50.   o  Change all the sample programs to _not_ #include <GL/gl.h> or
  51.      <GL/glu.h>.  From the spec:  "Because a very large window system
  52.      software vendor (who will remain nameless) has an apparent
  53.      inability to appreciate that OpenGL's API is independent of their
  54.      window system API, portable ANSI C GLUT programs should not
  55.      directly include <GL/gl.h> or <GL/glu.h>.  Instead, ANSI C GLUT
  56.      programs should rely on <GL/glut.h> to include the necessary
  57.      OpenGL and GLU related header files."  Sigh.
  58.  
  59.   o  New Helvetica fonts: 10, 12, and 18 point versions.
  60.      GLUT_BITMAP_HELVETICA_10, GLUT_BITMAP_HELVETICA_12, and
  61.      GLUT_BITMAP_HELVETICA_18.
  62.  
  63.   o  Implement glutFullScreen.
  64.  
  65.   o  Implement glutSetCursor.
  66.  
  67.   o  Implement glutGetModifiers.
  68.  
  69.   o  Implement glutBitmapWidth and glutStrokeWidth.
  70.  
  71.   o  Reimplement test2 to use glutGet(GLUT_ELAPSED_TIME) instead of
  72.      the less than portable gettimeofday.
  73.  
  74.   o  Ripped out all the support for compiling earlier GLUT API
  75.      versions.  It got very ugly and hard to maintain.
  76.  
  77.   o  Added GLUT_LUMINANCE to GLUT verison 3 API and documented it, but
  78.      it is not implemented as part of GLUT 3.0; should be in 3.1.
  79.  
  80.   o  Added OpenVMS support to GLUT library with much help from Andy Vesper.
  81.  
  82.   o  The display mode mask parameter for glutInitDisplayMode and the
  83.      milliseconds parameter for glutTimerFunc are now of type unsigned
  84.      int (previously unsigned long).
  85.  
  86.   o  glutMenuStatus obsoletes glutMenuState.  The callback registered
  87.      by glutMenuStatus is triggered just like glutMenuState, except
  88.      that an additional two parameters pass the X and Y location of the
  89.      mouse when the menu status changes.  This is to remedy problems a
  90.      GLUT program using glutPassiveMotion might have re-sync'ing with
  91.      the mouse position after menu use.
  92.  
  93.   o  In previous releases of GLUT, various user input events were
  94.      discarded when menus were in use.  Now, these callbacks are
  95.      generated.  If the effect of the events should be performed after
  96.      the menu is released, it is up to the GLUT program to delay the
  97.      action.
  98.  
  99.   o  Careful to ignore Enter/LeaveNotify events that come
  100.      from the pop-up window pointer grab and ungrab (ie,
  101.      Enter/LeaveNotify events not marked NotifyNormal for their mode.
  102.      Eliminates "spurious" entry events.
  103.  
  104.   o  Fixed bug with new work (like subwindow creation is a display callback)
  105.      not being placed on the work queue and getting lost.
  106.  
  107.   o  Fix memory corruption bug in caching of values returned by
  108.      glXChooseVisual; no longer cache.
  109.  
  110.   o  Fixed bug with glutCopyColormap sometimes not accurately
  111.      re-establishing the WM_COLORMAP_WINDOWS property.
  112.  
  113.   o  Fixed bug in deliver of enter and left callbacks.  Before "virtual"
  114.      enter and leave (X protocol teminology) were being reported.  The
  115.      semantic for the entry callback is it is entering and leaving
  116.      a GLUT windows real estate that counts; not passing through
  117.      the window hiearchy.
  118.  
  119.   o  Add XFlush to __glutFinishMenu in case menu call back will want to
  120.      read from a terminal window.  In this case, the X server may still
  121.      be grabbed since the XUngrabPointer hasn't been flushed out of
  122.      Xlib's buffers to the X server for processing (deadlock!).
  123.  
  124.   o  Don't allow modification of menus while in use.  Spec ammended to
  125.      say "It is illegal to create or destroy menus or change, add, or
  126.      remove menu items while a menu (and any cascaded sub-menus) are in
  127.      use (i.e., popped up)." Allowing modifications of menus while in
  128.      use was dubious, the semantics would be unclear, and even more
  129.      unfortunate, might vary from system to system.
  130.  
  131.   o  Spec warns that you should not call routines that require a current
  132.      window or menu when there is not a current window or menu (like
  133.      before you create one or if you destroy the current one).
  134.  
  135.   o  Fixed bug where glutSpecialFunc callback would only operate if
  136.      a glutKeyboardFunc callback was also registered.
  137.  
  138.   o  Fixed bug in color index visual selection so that largest number
  139.      of bits of color resolution is preferred to smallest.
  140.  
  141.   o  Fixed bug where if a double buffer X window was used to emulate
  142.      a single buffer window, GLUT should set the OpenGL read mode
  143.      to GL_FRONT (it was only changing the draw mode).
  144.  
  145.   o  Fixed an obscure ordering bug with simultaneous glutPushWindow and
  146.      glutPopWindow calls on different subwindows of the same window.
  147.  
  148.   o  Now, it is a fatal error to receive an expose event with no
  149.      display callback registered (it was stupid to allow mapped windows
  150.      that made no attempt to redisplay).  The spec has been changed to
  151.      say NULL can not be passed to glutDisplayFunc; previously, it
  152.      said this would disable the callback.  Stupid.  What was I thinking?
  153.  
  154.   o  GLUT spec is indexed now and generally improved.
  155.  
  156.   o  Support for IRIX 6.2's N32 and N64 object style to take advantage
  157.      of new MIPS processor instruction sets.  See lib/glut.n32 and
  158.      lib/glut.n64 (IRIX 6.x only).
  159.  
  160.   o  Fortran bindings also available for N32 and N64.  See lib/fglut.n32
  161.      and lib/fglut.n64.
  162.  
  163.   o  Tests support the new API version 3 interfaces.
  164.  
  165.   o  Contributed "bigtest" test program.
  166.  
  167.   o  Added splatlogo example demonstrating pixel path functionality.
  168.  
  169.   o  Added zoomdino program demonstrating use overlay rubber-banding.
  170.  
  171.   o  Contributed demo programs: hanoi, hanoi2, gears, moth, text3d,
  172.      and noof.
  173.  
  174.   o  Contributed SGI stereo program: stereo-plane
  175.  
  176.   o  Being out of colors in the default colormap without overlay planes
  177.      will no longer lead to a fatal error when allocating the color gray
  178.      for a pop-up menu.  Instead, GLUT finds the closest matching color
  179.      automatically.  Help from Brian Paul to code this.
  180.  
  181.   o  Eliminated Glut64.mk from all Makefile.sgi's
  182.  
  183. GLUT 2.2 -> 2.3
  184. ----------------
  185.  
  186.   o  Fix obscure problem with how X Input extension button press and
  187.      release events get selected; it seems GLUT should also be
  188.      selecting for the DeviceButtonPressGrab event class since this
  189.      ensures that a release will be delivered to the same window as the
  190.      press; that was my intent for how buttons presses and releases
  191.      should work.  I just didn't know you needed this obscure event
  192.      class to be selected.  Such a grab is the default for pointer
  193.      events.
  194.  
  195.   o  If windows are indirect, make sure that a glFinish is properly
  196.      done for all windows that have been made current to recently (ie,
  197.      last main loop iteration).  This helps ensure windows don't get
  198.      ahead of themselves.  Previously, GLUT simply did a glFinish to
  199.      whatever window GLUT happened to be made current to last at the
  200.      end of each main loop iteration.
  201.  
  202.   o  Fix what can be considered a bug where calling glutPostRedisplay
  203.      within a display callback would not leave the redisplay set; this
  204.      applies other routines that set work state needing to be done.
  205.      Essentially, clear the workMask before the work callbacks are done
  206.      instead of after.  The new test15 tests this.
  207.  
  208.   o  To support other OpenGL higher-level library that might want to
  209.      be able to call glXMakeCurrent, GLUT should not try to track
  210.      make current state and short circuit glXMakeCurrent calls when
  211.      GLUT believes the window/context are already current.  glXMakeCurrent
  212.      should implement the same "short circuit" case, but can appropriately
  213.      track the changed state from multiple libraries.
  214.  
  215.   o  The glutRemoveMenuItem routine was totally busted previous to 2.3.
  216.      Now it is fixed and test14 is a regression test for it.
  217.  
  218.   o  Add Greg Humphreys's hanoi program to progs/contrib
  219.  
  220.   o  Examples demonstrating Open Inventor used with GLUT found in
  221.      progs/inventor
  222.  
  223.   o  New progs/examples programs:  abgr, triselect, texenv, stenciltst,
  224.      stars, fogtst
  225.  
  226. GLUT 2.1 -> GLUT 2.2
  227. ---------------------
  228.  
  229.   o  Fixed bug in glutGet(GLUT_WINDOW_X) and glutGet(GLUT_WINDOW_Y).
  230.  
  231.   o  Added Philip Winston's human kinetics demo in progs/demos/walker
  232.      (COOL!).
  233.  
  234.   o  Improved test suite.
  235.  
  236.   o  Work around SunOS 4.x's non-ANSI compliant realloc.
  237.  
  238.   o  Better handle delivery of reshape callback.
  239.  
  240.   o  Pre-build stroke font C files to avoid having to rely on lex/yacc
  241.      working correctly.  Too many Linux systems missing flex/bison or
  242.      having verisons that resulted in undefined symbols while building
  243.      strokegen.
  244.  
  245.   o  Better portability, mostly avoiding compiler warnings.
  246.  
  247.   o  64-bit clean (as far as I know!).
  248.  
  249.   o  Compiles right for systems like DEC Alpha that support GLX 1.1 but
  250.      do not support GLX_SGIS_multisample extension.
  251.  
  252.   o  At Brian Paul's request for better Mesa support, changed colormap
  253.      allocation to work if RGBA window has PsueoColor visual.
  254.  
  255.   o  Fix Drew Bliss reported bug in colormap allocation (resulted in
  256.      GLUT programs not correctly sharing colormaps).
  257.  
  258.   o  Interesting bug involving the fact that XFlush may actually
  259.      read X protocol into Xlib's internal buffers so if you call
  260.      XFlush, then select on the X socket, you might find nothing to
  261.      read, but when in fact there is data in the Xlib internal buffers
  262.      that should be processed.  Using ISDN (I guess it has weird
  263.      network properties) showed this bug in a GLUT test13.  The fix is
  264.      to use XPending after XFlush.
  265.  
  266.   o  Improve X Input documentation references in the GLUT spec.
  267.  
  268.   o  Widen margins so spec kills less trees.
  269.  
  270.   o  Clarify GLUT spec to explain glutGet values returned by
  271.      GLUT_WINDOW_X, GLUT_WINDOW_Y, GLUT_WINDOW_WIDTH, and
  272.      GLUT_WINDOW_HEIGHT as being returned in pixels.
  273.  
  274.   o  Make sure consistently using reshape (and not resize) within GLUT
  275.      spec.
  276.  
  277.   o  GLUT spec should document that glutExtensionSupported,
  278.      glutCreateWindow, and glutCreateSubwindow return int.
  279.  
  280. GLUT 2.0 -> GLUT 2.1
  281. ---------------------
  282.  
  283.   o  XCOMM comments in Imakefiles results in unusable Makefiles
  284.      for systems that pre-date an X11R5-based imake.
  285.  
  286.   o  The rings.c and worms.c examples use "float" returning
  287.      versions of trigonometric functions (ie, cosf, sinf, etc.).  While
  288.      ANSI C reserves these names for their logical purpose, many
  289.      systems do not implement these functions.
  290.  
  291.   o  Calls to __glutWarning in glut_cindex in places lack
  292.      variable %d argument.
  293.  
  294.   o  Intended comments in lib/Imakefile cause avoiable
  295.      warnings for some C pre-processors.
  296.  
  297.   o  Old (pre-X11R6) versions of Xlib did not have XK_Page_Up
  298.      and XK_Page_Down keysym defs in /usr/include/X11/keysymdef.h
  299.      These are aliases to XK_Prior and XK_Next.
  300.  
  301.   o  The X11R5 to_wfont derived strokegen program for converting
  302.      PEX fonts to C data structures was full of memory access
  303.      bugs.  On most systems, they were not fatal.  That's
  304.      what I get for trying to steal PEX code I gues. :-)
  305.  
  306.   o  Various Purify-detected memory access bugs within the
  307.      GLUT library have been fixed.
  308.  
  309.   o  Better Imakefile handling of lex usage in lib/glut/Imakefile
  310.  
  311.   o  Better document colormap management routines.
  312.  
  313.   o  Correctly document the prototype for glutCreateSubWindow
  314.  
  315.   o  Add documentation usage hint explaining glutGetWindow
  316.      and glutGetMenu can be used to determine what window
  317.      or menu a callback is for.
  318.  
  319.   o  Fix bug in glutDetachMenu
  320.  
  321.   o  Fix bug in delivery of visibility callback for subwindows
  322.      of an unmapped top-level window.
  323.  
  324.   o  scube.c should use more likely to be optimized
  325.      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) instead of
  326.      glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA)
  327.  
  328.   o  Supression of various compiler detected warnings through
  329.      the GLUT distribution.
  330.  
  331.   o  Use of the "polygon offset" extension if available in origami.c
  332.  
  333.   o  SGI mkmkfiles.sgi script doesn't make Fortran by default now;
  334.      see instructions in README.fortran
  335.  
  336.   o  Improvements to the test programs.
  337.  
  338.   o  Avoid X Input extension calls when extension is present but
  339.      no devices are available.
  340.  
  341. GLUT 1.0 -> GLUT 2.0
  342. ---------------------
  343.  
  344.   o  API extensions; see README.glut2
  345.  
  346.   o  Bug fixes.
  347.  
  348.   o  More demos.
  349.  
  350.   o  Update documentation.
  351.  
  352. - Mark
  353.